﻿Imports BE.BE
Imports BL.BL

Public Class Helper_FL

    'todo en memoria, no va a la BD, el usr esta completo con los permisos (patentes). 
    Public Shared Sub setearPermisos(pusr As Usuario_BE, pform As Form)

        'recorremos los controles del frm.
        For Each ctrl As Control In pform.Controls
            If TypeOf ctrl Is GroupBox Then
                'ctrls dentro de un groupbox (es un contenedor de ctrls).
                For Each _ctrl As Control In ctrl.Controls
                    If TypeOf (_ctrl) Is Button Then '<- sólo buttons.
                        'por defecto is disabled.
                        _ctrl.Enabled = False
                        'recorremos todas las patentes del usr.
                        For Each mpat As Patente_BE In pusr.Patentes
                            'si esta la patente -> setear el ctrl según el tipo de la patente.
                            If pform.Name & "." & _ctrl.Name = mpat.Nombre Then
                                If mpat.Tipo = Patente_BE.Permisos.Permitido Then
                                    _ctrl.Enabled = True
                                Else
                                    _ctrl.Enabled = False
                                End If
                                Exit For '<- no buscamos más.
                            End If
                        Next 'fin patentes del usr.
                    End If
                Next
            End If

            'ctls fuera del groupbox.
            If TypeOf (ctrl) Is Button Then  '<- sólo buttons.
                'por defecto is disabled.
                ctrl.Enabled = False
                'recorremos todas las patentes del usr.
                For Each mpat As Patente_BE In pusr.Patentes
                    'si esta la patente -> setear el ctrl según el tipo de la patente.
                    If pform.Name & "." & ctrl.Name = mpat.Nombre Then
                        If mpat.Tipo = Patente_BE.Permisos.Permitido Then
                            ctrl.Enabled = True
                        Else
                            ctrl.Enabled = False
                        End If
                        Exit For '<- no buscamos más.
                    End If
                Next ' fin patentes del usr.
            End If
        Next 'fin de controles.

    End Sub


    Shared Sub CrearPatentes(pform As Form)
        'recorremos todos los controles del frm pasado como parámetro.
        For Each ctrl As Control In pform.Controls
            'si está dentro de un groupbox (contenedor de ctrls, recorremos los mismos).
            If TypeOf ctrl Is GroupBox Then
                For Each ctrlgb As Control In ctrl.Controls 'controles dentro del GroupBox.
                    If TypeOf (ctrlgb) Is Button Then
                        Dim mpat As New Patente_BE
                        mpat.Nombre = pform.Name & "." & ctrlgb.Name
                        mpat.Descripcion = "Patente del botón " & ctrlgb.Name & " del formulario " & pform.Name
                        mpat.Tipo = Patente_BE.Permisos.Denegado
                        Patente_BL.NuevaPatente(mpat)
                    End If
                    If TypeOf (ctrlgb) Is ComboBox Then
                        Dim mpat As New Patente_BE
                        mpat.Nombre = pform.Name & "." & ctrlgb.Name
                        mpat.Descripcion = "Patente del combobox " & ctrlgb.Name & " del formulario " & pform.Name
                        mpat.Tipo = Patente_BE.Permisos.Denegado
                        Patente_BL.NuevaPatente(mpat)
                    End If
                Next
            End If
            'es un botón fuera de algún GB del frm pasado como parámetro. 
            If TypeOf (ctrl) Is Button Then
                Dim mpat As New Patente_BE
                mpat.Nombre = pform.Name & "." & ctrl.Name
                mpat.Descripcion = "Patente del botón " & ctrl.Name & " del formulario " & pform.Name
                mpat.Tipo = Patente_BE.Permisos.Denegado
                Patente_BL.NuevaPatente(mpat)
            End If
            'es un combobox fuera de algún GB del frm pasado como parámetro. 
            If TypeOf (ctrl) Is ComboBox Then
                Dim mpat As New Patente_BE
                mpat.Nombre = pform.Name & "." & ctrl.Name
                mpat.Descripcion = "Patente del combobox " & ctrl.Name & " del formulario " & pform.Name
                mpat.Tipo = Patente_BE.Permisos.Denegado
                Patente_BL.NuevaPatente(mpat)
            End If
        Next
    End Sub


End Class
